r"""
对于ChatPromptTemplate不管是使用构造方法还是使用from_messages()方法，它接收的参数都是列表类型
对于列表中的元素可以是字符串、字典、字符串构成的元组、消息类型、提示词模板、消息提示词模板等等
"""
from langchain_core.prompts import ChatPromptTemplate

# 使用字符串：不推荐使用，默认都会是HumanMessage
chat_prompt1 = ChatPromptTemplate.from_messages([
    "你是AI助手，你的名字是{name}",
    "请问:{question}"
])
# 格式化聊天提示模板，填充占位符
prompt1 = chat_prompt1.format_messages(name="小明", question="你叫什么名字")
print(prompt1)

print("=" * 50)
# dict类型
chat_prompt2 = ChatPromptTemplate.from_messages([
    {"role": "system", "content": "你是AI助手，你的名字是{name}"},
    {"role": "user", "content": "请问:{question}"}
])
prompt2 = chat_prompt2.format_messages(name="小明", question="你叫什么名字")
print(prompt2)

print("=" * 50)
# message类型
from langchain_core.messages import SystemMessage,HumanMessage
chat_prompt3 = ChatPromptTemplate.from_messages([
    SystemMessage(content="你是AI助手，你的名字是{name}"),
    HumanMessage(content="请问:{question}")
])
prompt3 = chat_prompt3.format_messages(name="小明", question="你叫什么名字")
print(prompt3)

print("=" * 50)
# BaseChatPromptTemplate类型
t1 = ChatPromptTemplate.from_messages([("system", "你是AI助手，你的名字是{name}")])
t2 = ChatPromptTemplate.from_messages([("human", "请问:{question}")])

chat_prompt4 = ChatPromptTemplate.from_messages([t1, t2])
prompt4 = chat_prompt4.format_messages(name="小明", question="你叫什么名字")
print(prompt4)

print("=" * 50)
# BaseMessagePromptTemplate类型
from langchain_core.prompts import SystemMessagePromptTemplate,HumanMessagePromptTemplate

# 创建系统消模板，用于定义AI身份信息
system_template = SystemMessagePromptTemplate.from_template("你是AI助手，你的名字是{name}")
# 创建用户消息模板，用于定义用户问题
human_template = HumanMessagePromptTemplate.from_template("请问:{question}")
# 创建具体的系统消息和人类消息
system_message = SystemMessage(content="你是AI助手")
human_message = HumanMessage(content="你好")
# 创建嵌套的消息模板
nested_prompt = ChatPromptTemplate.from_messages([system_message, human_message])
# 构建完整的聊天消息模板
chat_prompt5 = ChatPromptTemplate.from_messages([
    system_template,
    human_template,
    system_message,
    human_message,
    nested_prompt])
# 格式化聊天提示模板，填充占位符
prompt5 = chat_prompt5.format_messages(name="小明", question="你叫什么名字")
print(prompt5)
